package iosr11.gbase.dao;

import iosr11.data.Entity;

import java.util.List;

import com.google.api.gbase.client.GoogleBaseEntry;

public interface GenericDAO<E extends Entity> {

	public boolean add(E entity);

	public boolean delete(E entity);

	public boolean update(E entity);

	public List<E> getAll();

	public boolean exist(String id);

	public E getByID(String id);

	public Class<E> getEntityClass();

	/* funkcje konieczne do zmiany elementow bazy na uzywane w systemie */
	public E rewrite(GoogleBaseEntry entry);

	public GoogleBaseEntry rewrite(E entity);

	/**
	 * Funkcja sprawdza czy rekord zwrocony przez baze jest odpowiedniego typu
	 * dla danego DAO. Typy sa zapisane w kondzie w poszczegolnych DAO.
	 * 
	 * @param entry
	 * @return boolean
	 */
	public boolean checkType(GoogleBaseEntry entry);
}
